/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ipartek.formacion.gestformwww.controlador;

import com.ipartek.formacion.gestformwww.modelo.ModeloDiaClase;
import com.ipartek.formacion.gestformwww.modelo.beans.DiaClase;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Aitor/Xarles
 */
public class VisualizarCalendarioAccion implements Accion {

  

    private final String visualizarcurso = "listar-cursos-accion";

    public AccionRouter ejecuta(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) {
        HttpSession sesion = request.getSession();
        AccionRouter router = null;
          AccionServlet as=(AccionServlet) servlet;
        ModeloDiaClase mdiaclase = (ModeloDiaClase) servlet.getServletContext().getAttribute("ModeloDiaClase");
        ArrayList<DiaClase> diaClase = new ArrayList<DiaClase>();
        Calendar fecha = null;
        Calendar c = null;
        int idCurso = 0;
        if (sesion.getAttribute("usuario") != null) {
            if (Verificador.numeroValido(request.getParameter("idCurso")) || (request.getAttribute("idCurso") != null)) {
                try {
                    if (request.getAttribute("idCurso") != null) {
                        idCurso = (Integer) request.getAttribute("idCurso");
                    } else {
                        idCurso = Integer.parseInt(request.getParameter("idCurso"));
                    }
                    if (request.getParameter("fecha") != null && Verificador.fechaValida(request.getParameter("fecha")) && !request.getParameter("fecha").isEmpty()) {
                        fecha = Verificador.stringFecha(request.getParameter("fecha"));
                    } else {
                        fecha = mdiaclase.getPrimerDia(idCurso);
                    }
                    if(mdiaclase.comprobarDuracion(idCurso)==false){
                        ArrayList<String> errores = new ArrayList<String>();
                        errores.add("error-no-cuadran-horas");
                        request.setAttribute("errores",errores);
                    }
                    fecha.set(Calendar.DAY_OF_MONTH, 1);
                    diaClase = mdiaclase.listarDiasClase(idCurso, fecha);
                } catch (GestorFormacionExcepcion ex) {
                    Logger.getLogger(VisualizarCalendarioAccion.class.getName()).log(Level.SEVERE, null, ex);
                    sesion.setAttribute("excepciones", ex.getMessage());
                }

                request.setAttribute("diaClase", diaClase);
                request.setAttribute("contenido-curso", "visualizar-calendario");
                request.setAttribute("fecha", fecha);
                router = new AccionRouter("principal");

            } else {
                try {
                    router=as.getFactory().getAction(as.getNombreClaseRecurso(visualizarcurso),servlet.getClass().getClassLoader()).ejecuta(servlet, request, response);
                } catch (ClassNotFoundException ex) {
                    Logger.getLogger(VisualizarCalendarioAccion.class.getName()).log(Level.SEVERE, null, ex);
                } catch (InstantiationException ex) {
                    Logger.getLogger(VisualizarCalendarioAccion.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IllegalAccessException ex) {
                    Logger.getLogger(VisualizarCalendarioAccion.class.getName()).log(Level.SEVERE, null, ex);
                }
           
            }
        } else {
            router = new AccionRouter("inicio", false);
        }


        return router;
    }

   
}
